{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Spectral library size evolution"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Spectral library sources:\n",
    "- NIST: [latest version](http://chemdata.nist.gov/dokuwiki/doku.php?id=peptidew:cdownload), [archive through PeptideAtlas](http://www.peptideatlas.org/speclib/)\n",
    "- PRIDE: [PRIDE Cluster](https://www.ebi.ac.uk/pride/cluster/#/libraries)\n",
    "- MassIVE: [MassIVE-KB](https://massive.ucsd.edu/ProteoSAFe/static/massive-kb-libraries.jsp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAd0AAAGECAYAAABzvPpRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XlYVGX/P/D3sLmAC4IbIKHmhrlE\nkppRKS6klppLi1uaKPrVQlTALXNHcwHFjSy39DE1c0ktAy3JDFBxC0UfjG1QdkUWBeT8/uDHeRiZ\nccZkzpmZ3q/r8ro6Z86ceXMSP3Pf5z73rRAEQQARERHpnZncAYiIiP4tWHSJiIgkwqJLREQkERZd\nIiIiibDoEhERSYRF9zmUlpYiNTUVpaWlckchIiIjwKL7HO7evQtPT0/cvXtX7ihERGQEWHSJiIgk\nwqJLREQkERZdIiIiibDoEhERSYRFl4iISCIsukRERBJh0SUiIpIIiy4REZFELOQO8G9wvsur1X7O\nLuejq/2cRESkX2zp0j+2fft25OXlyR2DiMhosKVL/9jOnTvRu3dv1K1bV+4oRPQvU109iFL3GrLo\nmrCcnBysWrUKL774IlJTU9GmTRv89ttvKC0txcsvv4z09HQIgoDPP/8c5ubmOHDgAK5duwYHBwek\npKRg9uzZqF27Nn799VecOnUKzs7OuHr1KkaNGoWMjAzk5eVhx44dcHR0RPv27bFkyRJ06NABlpaW\nOHXqFDZv3oz//Oc/sLW1BQA8fvwYM2fOlPmqEBHJh0XXhF28eBGZmZmYM2cOatasidjYWFhaWuLs\n2bOYPHkyAGDatGk4cuQIOnXqhA0bNiA8PBzm5uYICQnBrl278MEHHyAwMBARERGwtrZGQkICcnJy\nMGDAAKxevRpjx46Fk5MTAKB3794oLCxEQEAAxowZAzs7O3h4eKBPnz4AAB8fH9y6dQutWrWS7ZoQ\nEcmJRdeE9ezZE6mpqfDx8YGlpSWmTJkCAHB2dhaPcXFxQXx8PGrWrAkLCwt8/fXXAIAHDx7AwsIC\nSUlJsLa2hrW1NQCgZcuWaNmypcbPfPHFFwEAzZs3BwDk5uZi1apVqFu3LjIyMpCTk6OXn5WIyBiw\n6Jqw+Ph4eHl54eOPP8aZM2ewePFifPzxx0hOThaPuX37Njw9PdG2bVtYWFjA29sbCoUCycnJuHPn\nDlxcXFBYWIiCggJYW1vj5s2byMnJQbdu3WBmZgZBEJCQkCC2dhUKhXjuGzduICQkBJGRkTAzM0N8\nfLzk14CIyJCw6EpArsd7CgsLsXPnTrRo0QIpKSkYP348ysrK8PjxY4SFhSE5ORkNGjTAoEGDYG5u\njokTJ2LJkiVo3LgxlEolpkyZgrp162L58uVYunQpXFxccOfOHXz22WcAyruTw8LCUFxcjHHjxiEm\nJgY3b96Ei4sL3Nzc0Lx5c3Ts2BGzZ89G69atcevWLRw+fBidOnVCzZo1ZbkmRERyUgiCIMgdwlil\npqbC09MTERERYkvP0B08eBBKpRLTpk2TOwoR0T9mrKOX+Zzuv0hqaipOnz6NmJgY/PXXX3LHISL6\n12H38r+Ik5MT1q9fL3cMIqJ/LbZ0iYiIJMKiS0REJBEWXSIiIomw6BIREUlEbwOpUlNTsXr1arRr\n1w55eXnIz8/HvHnzYGGh+pHHjx/H+fPnYWtri9LSUvj6+kKhUKC4uBgrVqxAw4YNkZKSgsGDB8Pd\n3R1A+aQP27dvh4uLC1JSUhAQEIA6depUyRAdHY0jR47AyckJmZmZCAgIgJWVFcrKyhASEgILCwvk\n5OSga9eu8PLyAgDcuXMH69atg4uLCxITE+Hr64vGjRs/17Xwmv/dc71fnZ8Wv1/t53ya1NRUREdH\n47333gMAFBcX4/3338cPP/ygcpxSqURQUBBat27Nx5KIiJ6gt5bu/fv30a9fP0ycOBEzZ85ESkoK\nfvzxR5Vj0tPTsXbtWsydOxfTpk1DUlISfvnlFwDlK9jY2NjAx8cHAQEB8Pf3x6NHjyAIAmbMmIFJ\nkyZh0qRJcHV1RUhISJXPLyoqgr+/PwIDA+Hj44OaNWti9+7dAICff/4ZqampmDZtGubOnYtVq1Yh\nIyMDALBgwQIMHDgQkyZNgpeXFxYsWKCvS2RUlEqlSoG1srLCwYMHqxzn6OiInj17ShmNiMho6K3o\ntm/fXmw9AoAgCOL8vRUiIyPh6uoKc3NzAIC7uzsiIiIAAKdPn4abmxsAoG7dumjQoAFiY2ORmpqK\n7OxsuLi4VHlPZZcuXYK9vT1sbGyeem4LCwu4uroiMjISJSUliIyMFF9zd3fHmTNnUFpaWl2XRVIn\nT55Er169sGbNGmzYsAFTpkxBREQECgoKMHfuXGzatAnLli3DgQMHAAAHDhxAly5dsHXrVqxfvx4+\nPj6IjY3Fo0eP8MMPP0CpVGL9+vWIiorCgQMHxJ4HAPjmm28wffp0bN26FZcuXRL3a/qspKQkzJ07\nF9988w1mz56NU6dOSXtxiIhkIMlzurGxsahZsyY8PT1V9mdnZ4tFEQCsra2RlZUFAMjKylIp0jY2\nNsjOzkaNGjVU3mNjYyO+52nnrnycuteys7ORm5sLhUKBWrVqAQBq164NoHzS/oYNG/7jn18uffv2\nxa5du9C1a1f06NED9+7dQ79+/TBkyBDY2tpi8uTJEAQBffv2xWuvvYZhw4Zh48aN6N27t7gQwuTJ\nk3Hq1CkMGTJEZSarrl27YuPGjQCAW7du4dtvv0V4eDjMzMywZs0aMUNYWJjaz/r111+hUCgwcuRI\nFBUV4c6dO7JcIyIiKem96F65cgXfffcd1q5dCzMz1Ya1nZ0d4uLixO2CggLY29sDAOzt7VFQUCC+\nlp+fDzs7O9jb2yM/P19lf8V7njy3puPUvWZnZwdbW1sIgoCioiLUqlULhYWFACCuB2usKlYVql+/\nPiwtLXH9+nXY2toiLCwMANCuXTtkZWXBwcFB5fjmzZtDqVSqXCt1bt26BScnJ/H/r7Ozs1hEr1+/\njtq1a1f5rBEjRuDrr7/GmDFjYGtri+nTp1f/D05EZGD0Onr57NmzOHLkCJYuXQpzc3OcOHFC5XUP\nDw/ExcXh8ePHAICYmBixNdyzZ09cvHgRAJCXl4ecnBx07twZTk5OsLOzQ2JiYpX3VNa5c2dkZmaK\nBUPTuUtLSxEXFwcPDw9YWlrCw8NDfC0mJgZvvPFGlcFfxqZiVaHc3FwUFxejTZs2aNOmDSZOnIiJ\nEyfinXfeUVnur+L427dvw9HRETY2NjA3N0fFNN2VvygB5cv5paSkoKysTOX9AODq6qr2sy5duoTx\n48fju+++w5tvvong4GC9XgMiIkOgtwUPrl27hlGjRqFDhw4AgLKyMri6umLw4MGYP3++OAjn+PHj\niI6ORr169QBAZfRyUFAQGjRoAKVSiffee09l9PK2bdvg7OwMpVKJwMBA1KlTR+w+jYqKAgBERUXh\n8OHDcHBwQE5ODgIDA8XRy8HBwTAzM0Nubi66d++uMno5JCQEzs7OSEpKgp+fn8bRy7oueCDn6OXR\no0fDw8MDxcXFuHr1KoYNG4YePXpg5cqVsLe3h5mZGcrKyjB16lQAQK9evTBp0iTcvXsX165dg4+P\nD1555RXk5eVh4sSJ6NKlCxo3bow6depg6dKl+OyzzzBq1Ch89dVXuHr1Klq3bo2///4bmZmZmD17\nNl544QW1n/XTTz/hjz/+gJOTE/773//inXfegYeHR7VfJyIyTca64IHkqwwtXLgQXbp0wYABA6r9\n3GFhYVAoFPD29q72c6tjDKsMjR49GsuXL9c5X69evTioiYgMnrEWXcknxxg3bpxeCi4AeHl5SVZw\njUF4eDiUSiV2794tduE/zaFDh/DgwQNs375d/+GIiP6FuJ7uczCGli4RkSliS5eIiIieikWXiIhI\nIiy6REREEmHRJSIikgiLLhERkURYdImIiCTCoktERCQRFl0iIiKJsOgSERFJhEWXiIhIIiy6RERE\nEmHRJSIikgiLLhERkURYdImIiCTCoktERCQRFl0iIiKJsOgSERFJhEWXiIhIIiy6REREEmHRJSIi\nkgiLLhERkURYdImIiCTCoktERCQRFl0iIiKJsOgSERFJhEWXiIhIIjoV3RMnTmD79u0oLi5GRESE\nvjMRERGZJK1FNyQkBAcOHMC5c+dgYWGBq1evYtOmTVJkIyIiMilai+79+/fx9ddfo0mTJjAzM4Ov\nry+ys7OlyEZERGRStBZda2vrKvtKSkr0EoaIiMiUWWg7IC8vD3v37kVubi7OnTuHyMhIPHr0SIps\nREREJkVrS3fmzJm4fPkyoqOjMX36dOTm5mLOnDlSZCMiIjIpWlu6derUwfLly6XIQkREZNK0tnQ/\n+OADJCYmitv79u3DgAED9JmJiIjIJGktug8ePMBHH32Eo0ePAgBGjBiBbt266T0YERGRqdFadLt1\n64ZvvvkGGzZswPz581FcXAyFQiFFNiIiIpOitegqFAq0bdsWBw4cQGFhIYYNG4bk5GQpshEREZkU\nrUX3jz/+wKFDh2BjY4PVq1fjgw8+wJ9//ilFNiIiIpOidfTy8ePHVbY/+ugjeHp66i0QERGRqdLY\n0n348CEAIC0trcqf4OBgyQISERGZCo0t3bfffhu7du3CoEGDUL9+fQiCIL6Wl5fHZ3eJiIiekcai\n+9NPP6FGjRoYN24cpk6dqvJaaGio3oMRERGZGo1Ft0aNGgCgUnDLyspQWFhYpQirc/fuXaxbtw6x\nsbE4ceKE2mNGjBghfg4ArFmzBg0bNkRxcTFWrFiBhg0bIiUlBYMHD4a7uzsAID4+Htu3b4eLiwtS\nUlIQEBCAOnXqVDl3dHQ0jhw5AicnJ2RmZiIgIABWVlYoKytDSEgILCwskJOTg65du8LLywsAcOfO\nHaxbtw4uLi5ITEyEr68vGjdurPVnJSIi0oXWgVQrV65E/fr18fHHH2PEiBG4c+cOpkyZgrFjxz71\nfTExMejbty8uXryo8RgPDw9Mmzatyv6dO3fCxsYGPj4+yMvLw6BBg/DTTz/BysoKM2bMQGhoKFxc\nXLBnzx6EhIRg3rx5Ku8vKiqCv78/fvzxR9jY2ODLL7/E7t27MW7cOPz8889ITU3F6tWrUVpaCi8v\nL7i5uaFRo0ZYsGABxo4dix49euC3337DggULsHnzZm2XiIiISCdaHxnKz8/HxIkTcfr0aTRp0gRR\nUVG4efOm1hO/8847qFWr1lOPuXnzJsLCwrBhwwYcOnRI3H/69Gm4ubkBAOrWrYsGDRogNjYWqamp\nyM7OhouLCwDA3d0dERERVc576dIl2Nvbw8bGpspxlc9tYWEBV1dXREZGoqSkBJGRkeJr7u7uOHPm\nDEpLS7X+rERERLrQ2tKtV68eAODkyZMYNmwYgPJCWB0mTJiATp06QRAEfPbZZyguLsaIESOQlZWl\nso6vjY0NsrOzUaNGDbGQVuzPysqqct7s7GyNx6l7LTs7G7m5uVAoFOIXhdq1awMAcnNz0bBhw2r5\neYmI6N9Na0s3NTUVy5YtQ0xMDN58800kJCTg77//rpYP79SpE4DyWa+6deuG33//HQBgb2+PgoIC\n8bj8/HzY2dnB3t4e+fn5Kvvt7e2rnNfOzk7jcepes7Ozg62tLQRBQFFREQCgsLAQAGBra1stPysR\nEZHWojt//nw4ODhgy5YtsLS0xIULF/D+++8/9wcnJCRg//794nZSUhKaN28OAOjZs6d4LzgvLw85\nOTno3LkznJycYGdnJ656FBMTo3aijs6dOyMzM1MsrpWPq3zu0tJSxMXFwcPDA5aWlvDw8BBfi4mJ\nwRtvvAELC62dAURERDpRCJUfwK1GZ8+exbFjx3Dq1CmMGTMGH374IdLS0jB//nwcPHgQ6enpWLx4\nMdq2bYuSkhJkZGRg3rx5sLa2RnFxMYKCgtCgQQMolUq89957KqOXt23bBmdnZyiVSgQGBqJOnTq4\nd+8e+vXrh6ioKABAVFQUDh8+DAcHB+Tk5CAwMFAcvRwcHAwzMzPk5uaie/fuKqOXQ0JC4OzsjKSk\nJPj5+T119HJqaio8PT0REREBJycnfVxGIiJS43yXV6vlPF3OR1fLeXSlt6KrzsKFC9GlSxe9rMcb\nFhYGhUIBb2/vaj+3Jiy6RETyMNaiK2nf6bhx4+Ds7KyXc3t5eent3ERERNVB6z3dtLS0avswfRZF\nFlwiIjJ0WovurFmzkJSUJEUWIiIik6a1e9ne3h4HDx7E3bt3MWjQILz22mtS5CIiIjI5WotucHAw\nFAoFioqK8MMPP2Djxo149913MWjQIJV5k4mIiOjptHYv//nnn3j8+DFOnTqFQ4cOIS0tDRkZGZgz\nZw6+//57KTISERGZBK0t3aVLl+LBgwdwdnbGhAkT0Lt3b5iZldfqWbNmYejQoXoPSUREZAq0Ft1a\ntWrhyy+/RLt27VT2Jycn4+7du3oLRkREZGp0emTowoULVfY7Oztj165deglFRERkirQWXXt7e4wa\nNUqKLERERCZNa9Ht2LGjuPJOBS7sTkRE9Oy03tPNy8vDgAED8PLLL8PKygoAcOXKFfj4+Og9HBER\nkSnRWnQTEhIwbdo0lX0cQEVERPTstBbduXPnonv37ir7XF1d9RaIiIjIVGm9p/tkwQWAY8eO6SUM\nERGRKdPa0o2NjcX8+fPx999/o6ysDIIgQKFQwM/PT4p8REREJkNrS3fPnj3YuXMnRo4cievXryM8\nPBwTJkyQIhsREZFJ0Vp0mzZtigYNGqCsrAwA4OTkhEePHuk9GBERkanR2r2cmJiIe/fuobi4GIcO\nHUK9evVw/vx5KbIRERGZFK1Ft3///rh27RrGjx+PKVOmIDc3F/Pnz5ciGxERkUnRWnQfPnyIJk2a\nwMXFBcePH5ciExERkUnSek83KCgI5ubmUmQhIiIyaVqLrru7Ozp06KCy79y5c3oLREREZKq0di+7\nuroiKCgIr7/+OmrUqAGg/DEidZNmEBERkWZai+62bdvQpk0b/PXXX+K+5ORkvYYiIiIyRVqL7vDh\nwzFr1iyVffv379dbICIiIlOltejOmjULBQUFYku3ffv2GD58uN6DERERmRqtRffcuXPw9fUVtxUK\nBYKDg9GtWze9BiMiIjI1WovuunXrsG3bNnE5v7/++gtLlixh0SUiInpGWh8ZcnZ2Vlk/t3379njx\nxRf1GoqIiMgUaS26Li4uKqOVk5OTUadOHb2GIiIiMkUau5d79eoFhUIBQRCwfv162NnZAQCysrLQ\nqFEj+Pv7SxaSiIj073yXV5/7HF3OR1dDEtOlsei6ublh+vTpVfYLgoDQ0FC9hiIiIjJFGovuvHnz\nUL9+fbWvjR07Vm+BiIiITJXGopuXl4f69esjJiamyms7d+7E+vXr9RqMiIjI1GgsulOnTsXmzZsx\nY8YMuLi4QBAE8TVOA0lERKbAa/53z32Onxa/r/OxGovukSNHAACTJk3CyJEjVV7bvXv3P4xGRET0\n76X1kaEnCy5Q/hgRERERPRuNLd2njVA+c+YMevTooZdAREREpkpjS/f06dMa31T5/i4RERHpRmNL\nd9q0aXjrrbfUvtahQwd95SEiIjJZGlu6mgouALz55pv6yEJERGTStA6kIiIiourBoktERCQRrevp\nqpOfnw8bG5unHnP37l2sW7cOsbGxOHHihNpjjh8/jvPnz8PW1halpaXw9fWFQqFAcXExVqxYgYYN\nGyIlJQWDBw+Gu7s7ACA+Ph7bt2+Hi4sLUlJSEBAQoHbVo+joaBw5cgROTk7IzMxEQEAArKysUFZW\nhpCQEFhYWCAnJwddu3aFl5cXAODOnTtYt24dXFxckJiYCF9fXzRu3PifXCIiIqIqNLZ009LSNP5Z\nunSp1hPHxMSgb9++Gkc6p6enY+3atZg7dy6mTZuGpKQk/PLLLwDKp5m0sbGBj48PAgIC4O/vj0eP\nHkEQBMyYMQOTJk3CpEmT4OrqipCQkCrnLioqgr+/PwIDA+Hj44OaNWuKE3r8/PPPSE1NxbRp0zB3\n7lysWrUKGRkZAIAFCxZg4MCBmDRpEry8vLBgwQLtV5CIiEhHGovuwIEDMXr0aIwaNarKn4ri+DTv\nvPMOatWqpfH1yMhIuLq6wtzcHADg7u6OiIgIAOWPK7m5uQEA6tatiwYNGiA2NhapqanIzs4WJ+eo\n/J7KLl26BHt7e7E1runcFhYWcHV1RWRkJEpKShAZGSm+5u7ujjNnzqC0tFTrz0pERKQLjd3Lo0eP\nVru0H4BqWewgOztbpYva2toaWVlZAMrX7LW2thZfs7GxQXZ2NmrUqKHyHhsbG/E9Tzt35ePUvZad\nnY3c3FwoFArxi0Lt2rUBALm5uWjYsOFz/7xEREQaW7qaCi4AdO/e/bk/2M7ODvn5+eJ2QUEB7O3t\nAQD29vYoKCgQX8vPz4ednR3s7e1V3pOfny++52nnrnycutfs7Oxga2sLQRBQVFQEACgsLAQA2Nra\nPvfPSkREBOg4evnnn3/Gpk2bEBoaitDQUKxcufK5P9jDwwNxcXF4/PgxgPJ7wJ6engCAnj174uLF\niwDKlxjMyclB586d4eTkBDs7OyQmJlZ5T2WdO3dGZmamWFw1nbu0tBRxcXHw8PCApaUlPDw8xNdi\nYmLwxhtvwMLiH401IyIiqkJrRVm2bBlKSkpw/fp1vP7661AqlahRo4bWE589exbHjh3DvXv3sHHj\nRnz44YdIS0vD/PnzcfDgQTRu3BjTp0/H4sWLUa9ePbzwwgvo06cPAGDMmDEICgpCaGgolEolVq5c\niZo1awIAVq9ejc2bN8PZ2RlKpRKBgYEAgHv37qFfv36IiopCrVq1sHLlSixbtgwODg4oKioSF27o\n168frl+/juDgYOTm5mLmzJlo1KgRAGDhwoUICQnB5cuXkZSUhIULF/6zq0pERKSGQtAykfLy5csx\ne/ZsLFu2DHPmzAEArFy5Ev7+/s/8YQsXLkSXLl0wYMCAf5b2KcLCwqBQKODt7V3t59YkNTUVnp6e\niIiIgJOTk2SfS0SkD+e7vPrc5+hyProakmhXHVkBYN7bM577HNWynm4FhUIBoPzeZ1lZGczMzMTu\n3Wc1btw4ODs7/6P3auPl5aW3cxMREVUHrUU3MTERx44dQ/v27TFgwADUrl0bdnZ2/+jD9FkUWXCJ\niMjQaS26mzdvFv/b1tYWubm5GDRokF5DERERmSKtRbd3794YPXo0xo4di/79+0uRiYiIyCRpfWTI\nzs4OY8eOlSILERGRSdNadN3c3MS5iSsEBQXpLRAREZGp0tq9fPXqVfTv3x8vvvgirKysIAgCkpOT\nxedjiYiISDdai25hYSE2btyosm/nzp16C0RERGSqtBbdFStWoFWrVuJ2eno6Pv/8c72GIiIiMkVa\n7+l+//33Kts3btzgOrNERET/gNai++R6sh4eHipL4xEREZFuNHYvt23bVpwCcvfu3eJ+KysrDB48\nWP/JiIiITIzGonvjxg0AwNq1a5+6ti4RERHpRmv38pMFt2JxdyIiIno2Wouun58fxo0bJ27PmTMH\nx48f12soIiIiU6S16NaoUQPbtm0Tt4ODg/HHH3/oNRQREZEp0lp0GzRoUGUfRy8TERE9O62TY9y9\nexeHDx+Gu7s7ACAmJgaZmZl6D0ZEZOzOd3m1Ws7T5Xx0tZyH5Ke16M6aNQuzZs1CQEAAFAoF3N3d\nsXLlSimyERERmRStRbdJkybYtWuXOGq5du3aeg9FRERkirTe0wWAEydOYN++fbCwsEBERIS+MxER\nEZkkrUU3JCQEBw4cwLlz52BhYYGrV69i06ZNUmQjIiIyKVqL7v379/H111+jSZMmMDMzg6+vL7Kz\ns6XIRkREZFK0Fl1ra+sq+0pKSvQShoiIyJRpHUiVl5eHvXv3Ijc3F+fOnUNkZCQePXokRTYiIiKT\norWlO3PmTFy+fBnR0dGYPn06cnNzMWfOHCmyERERmRStLd06depg+fLlUmQhIiIyaVqLbnFxMb75\n5hucPXsWAPD6669j3LhxsLKy0ns4IiIiU6K1e/nzzz/HlStX0K9fP/Tr1w+XL1/GggULpMhGRERk\nUrS2dO/du4fNmzeL26NGjcKkSZP0GoqIiMgUaW3pNm3atMq+xo0bAwCuXr1a/YmIiIhMlNaWbkFB\nAWbNmiWuMnThwgXUqVMHhw4dwg8//IAdO3boPSQREZEp0Fp0r127hk6dOiE2NhYAYGZmhoKCAkRF\nRSEjI0PvAYmIiEyF1qLr4+ODd999V+1rhw4dqvZAREREpkrrPd3KBTcvLw+CIIjbgwcP1k8qIiIi\nE6Sx6O7evRuTJ09Gbm4uAGDRokV49dVX0bVrV8TExEgWkIiIyFRo7F6OiIjA3LlzYWtri1u3buHI\nkSM4fvw4BEHAl19+KQ6sIiIiIt1oLLpOTk5o2bIlACA8PBx9+vRBixYtAABNmjSRJh0REZEJ0di9\nbGb2v5d+++039OzZU9y2sNA6/oqIiIieoLF6ZmRk4OLFi0hNTcXNmzfxxhtvACh/bjclJUWygERE\nRKZCY9GdPHky/Pz8kJ+fjy+++AI1a9bE9evX8fnnn+PNN9+UMiMREZFJ0Fh0O3TogF9++UVlX7t2\n7bB//369hyIiIjJFWp/TJSIiourBoktERCQRgxiGPGXKFDx48EDcnjNnDtq0aYOQkBBYWFggJycH\nXbt2hZeXFwDgzp07WLduHVxcXJCYmAhfX19x5aPK4uPjsX37dri4uCAlJQUBAQGoU6cOAGDHjh3I\nyMiAIAho2rQpRo8eDaB81q2VK1eiWbNmSExMxPjx49GqVSsJrgIREZk6gyi67dq1w7Rp01T2nThx\nAqmpqVi9ejVKS0vh5eUFNzc3NGrUCAsWLMDYsWPRo0cP/Pbbb1iwYIHKmr8AIAgCZsyYgdDQULi4\n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\nBEGoxP8DZuNbk8gcn5EAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x114b14240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import pandas as pd\n",
    "\n",
    "\n",
    "# plot styling\n",
    "plt.style.use(['seaborn-white', 'seaborn-paper'])\n",
    "plt.rc('font', family='serif')\n",
    "sns.set_palette('Set1')\n",
    "sns.set_context('paper', font_scale=1.3)    # single-column figure\n",
    "\n",
    "# NIST <=2013: http://www.peptideatlas.org/speclib/\n",
    "# NIST >=2014: http://chemdata.nist.gov/dokuwiki/doku.php?id=peptidew:cdownload\n",
    "# PRIDE Cluster: https://www.ebi.ac.uk/pride/cluster/#/libraries\n",
    "# MassIVE-KB: https://massive.ucsd.edu/ProteoSAFe/static/massive-kb-libraries.jsp\n",
    "spec_lib_size = [('NIST human ion trap\\n(2006-12-13)', 93370, 33020),\n",
    "                 ('NIST human ion trap\\n(2008-07-11)', 223793, 154750),\n",
    "                 ('NIST human ion trap\\n(2009-02-04)', 261777, 178781),\n",
    "                 ('NIST human ion trap\\n(2010-01-14)', 345489, 222558),\n",
    "                 ('NIST human ion trap\\n(2012-05-30)', 310048, 208796),\n",
    "                 ('NIST human ion trap\\n(2014-05-29)', 340357, 207910),\n",
    "                 ('PRIDE Cluster human\\n(2015-04-01)', 789745, 189400),\n",
    "                 ('NIST human orbitrap\\n(2016-09-23)', 1148560, 324877),\n",
    "                 ('MassIVE-KB human HCD\\n(2017-11-27)', 2148752, 1114503)]\n",
    "spec_lib_size_temp = []\n",
    "for name, num_spectra, num_peptides in spec_lib_size:\n",
    "    spec_lib_size_temp.append([name, 'spectra', num_spectra])\n",
    "    spec_lib_size_temp.append([name, 'peptides', num_peptides])\n",
    "df = pd.DataFrame(spec_lib_size_temp, columns=['library', 'type', 'num'])\n",
    "\n",
    "width = 7\n",
    "height = width / 1.618    # golden ratio\n",
    "fig, ax = plt.subplots(figsize=(width, height))\n",
    "\n",
    "sns.barplot(x='library', y='num', hue='type', data=df, ax=ax)\n",
    "\n",
    "ax.xaxis.label.set_visible(False)\n",
    "plt.setp(ax.get_xticklabels(), rotation='vertical')\n",
    "ax.set_ylabel('Spectral library size')\n",
    "ax.yaxis.set_major_formatter(\n",
    "    matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))\n",
    "ax.legend(loc='upper left')\n",
    "\n",
    "sns.despine()\n",
    "\n",
    "plt.savefig('spec_lib_size.pdf', dpi=300, bbox_inches='tight')\n",
    "plt.show()\n",
    "plt.close()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  },
  "latex_envs": {
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 0
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
